from pydantic import Field, BaseModel

from recruit.domain.models.base import Base
from recruit.domain.models.user_id import UserTelegramId, UserId


class UserCreate(Base):
    user_id: UserTelegramId = Field(
        ...,
        description='Уникальный идентификатор пользователя'
    )
    username: str = Field(..., description='Юзернейм пользователя')


class UserResult(UserCreate):
    id: UserId = Field(
        ...,
        description='Уникальный идентификатор пользователя'
    )


class UserUpdate(Base):
    username: str | None = Field(None, description='Юзернейм пользователя')


class UserUpdateDTO(BaseModel):
    id: UserId
    username: str | None
